﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace DMA.SGDB.DAL
{
    public class ProdutoDAL
    {
        public void Insert(PRODUTO_IT produto)
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    db.AddToPRODUTO_IT(produto);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Update(PRODUTO_IT produto)
        {
            try
            {
                EntityKey key;
                object originalItem;

                using (var db = new DMA_SGDBEntities())
                {
                    key = db.CreateEntityKey("PRODUTO_IT", produto);

                    if (db.TryGetObjectByKey(key, out originalItem))
                    {
                        db.ApplyCurrentValues(key.EntitySetName, produto);
                    }

                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Delete(int idProduto)
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    var recordToBeExcluded = db.PRODUTO_IT.Single(r => r.COD_PRO == idProduto);
                    db.PRODUTO_IT.DeleteObject(recordToBeExcluded);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public IList<PRODUTO_IT> GetAll()
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    return db.PRODUTO_IT.ToList();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public PRODUTO_IT LoadById(int idPRODUTO_IT)
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    return db.PRODUTO_IT.Single(r => r.COD_PRO == idPRODUTO_IT);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public IList<PRODUTO_IT> GetDuplicateRecord(PRODUTO_IT produto)
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    return db.PRODUTO_IT.Where(r => r.NOME_PRO == produto.NOME_PRO && r.DESCR_PRO == produto.DESCR_PRO && r.UNI_MED_PRO == produto.UNI_MED_PRO).ToList();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public IList<PRODUTO_IT> GetDuplicateDescription(PRODUTO_IT CLIENTES_PF)
        {
            try
            {
                using (var db = new DMA_SGDBEntities())
                {
                    //return db.CLIENTES_PF.Where(r => r.IdCLIENTES_PF != CLIENTES_PF.IdCLIENTES_PF && r.Description.ToUpper().Equals(CLIENTES_PF.Description.ToUpper())).ToList();
                    return null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
